package com.zejian.structures.LinkedList.MyCollection;

import java.util.*;


/**
 * Created by zejian on 2016/11/10.
 * Blog : http://blog.csdn.net/javazejian [请尊重原创,转载注明出处]
 */
public interface IList<T> {
    /**
     * list大小
     */
    int size();

    /**
     * 是否为空
     */
    boolean isEmpty();

    /**
     * 是否包含data
     */
    boolean contains(T data);

    /**
     * 清空数据
     */
    void clear();

    /**
     * 根据index获取数据
     */
    T get(int index);

    /**
     * 替换数据
     */
    T set(int index, T data);

    /**
     * 尾部添加数据
     */
    boolean add(T data);

    /**
     * 根据index添加数据
     */
    void add(int index, T data);

    /**
     * 移除数据
     */
    boolean remove(T data);

    /**
     * 根据index删除数据
     */
    T remove(int index);

    /**
     * 根据data获取下标
     */
    int indexOf(T data);

    /**
     * 根据data获取最后一个下标
     */
    int lastIndexOf(T data);
}
